package edu.pe.cayetano.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.framework.DAOException;
import edu.pe.cayetano.ws.to.PacienteTO;

public class PacienteDAO extends BaseDAO{

	
	public PacienteDAO(Connection cnx) {
		super(cnx);
	}
	
	public BResult getPaciente(String dni) throws Exception {

		String 					schema			= "db2admin.";
		PacienteTO	 			pacienteTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT PACIENTE_ID,NOMBRES,APEPATERNO,APEMATERNO,COD_UBIGEO,DNI,DIRECCION,");
			query.append(" FECHANACIMIENTO,TELEFONO_FIJO,TELEFONO_CELULAR,COD_ESTADO_CIVIL,COD_SEXO,COD_GRADO"); 
			query.append(" FROM "+schema+"PACIENTE WHERE DNI=?"); 
			
			pstmt = getConnection().prepareStatement(query.toString());
			System.out.println("getPaciente"+query.toString());
			pstmt.setString(1,dni);
			rs=pstmt.executeQuery();
			ret = new BResult();
			if(rs.next()){
				pacienteTO=new PacienteTO();
				pacienteTO.setPaciente_id(rs.getString("PACIENTE_ID"));
				pacienteTO.setNombres(rs.getString("NOMBRES"));
				pacienteTO.setApepaterno(rs.getString("APEPATERNO"));
				pacienteTO.setApematerno(rs.getString("APEMATERNO"));
				pacienteTO.setUbigeo(rs.getString("COD_UBIGEO"));
				pacienteTO.setDni(rs.getString("DNI"));
				pacienteTO.setDireccion(rs.getString("DIRECCION"));
				pacienteTO.setFechanacimiento(rs.getString("FECHANACIMIENTO"));
				pacienteTO.setTelefono_fijo(rs.getString("TELEFONO_FIJO"));
				pacienteTO.setTelefono_celular(rs.getString("TELEFONO_CELULAR"));
				pacienteTO.setEstadocivil(rs.getString("COD_ESTADO_CIVIL"));
				pacienteTO.setSexo(rs.getString("COD_SEXO"));
				pacienteTO.setGradoInstruccion(rs.getString("COD_GRADO"));
				ret.setObject(pacienteTO);
				ret.setMessage("exito");
				ret.setCode(0);
			}else{
				pacienteTO=new PacienteTO();
				ret.setObject(pacienteTO);
				ret.setCode(0);
			}
		}catch(Exception e){
			System.out.println("PacienteDAO:::buscarPaciente_for_HC:: "+e.getMessage());
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
	
	
	public BResult getListaPaciente() throws Exception {

		String 					schema			= "db2admin.";
		PacienteTO 				pacienteTO	 	= null;
		PreparedStatement   	pstmt 		 	= null;
		ResultSet 				rs 			 	= null;
		BResult					ret				= null;
		ArrayList				listaPaciente	= new ArrayList();
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT PACIENTE_ID,NOMBRES,APEPATERNO,APEMATERNO,COD_UBIGEO,DNI,DIRECCION,");
			query.append(" FECHANACIMIENTO,TELEFONO_FIJO,TELEFONO_CELULAR,COD_ESTADO_CIVIL,COD_SEXO,COD_GRADO"); 
			query.append(" FROM "+schema+"PACIENTE"); 
			pstmt = getConnection().prepareStatement(query.toString());
			System.out.println("getListaPaciente"+query.toString());
			rs=pstmt.executeQuery();
			ret = new BResult();
			while(rs.next()){
				pacienteTO=new PacienteTO();
				pacienteTO.setPaciente_id(rs.getString("PACIENTE_ID"));
				pacienteTO.setNombres(rs.getString("NOMBRES"));
				pacienteTO.setApepaterno(rs.getString("APEPATERNO"));
				pacienteTO.setApematerno(rs.getString("APEMATERNO"));
				pacienteTO.setUbigeo(rs.getString("COD_UBIGEO"));
				pacienteTO.setDni(rs.getString("DNI"));
				pacienteTO.setDireccion(rs.getString("DIRECCION"));
				pacienteTO.setFechanacimiento(rs.getString("FECHANACIMIENTO"));
				pacienteTO.setTelefono_fijo(rs.getString("TELEFONO_FIJO"));
				pacienteTO.setTelefono_celular(rs.getString("TELEFONO_CELULAR"));
				pacienteTO.setEstadocivil(rs.getString("COD_ESTADO_CIVIL"));
				pacienteTO.setSexo(rs.getString("COD_SEXO"));
				pacienteTO.setGradoInstruccion(rs.getString("COD_GRADO"));
				listaPaciente.add(pacienteTO);
			}
			if(listaPaciente.size()>0){
				PacienteTO [] arregloPaciente = new PacienteTO[listaPaciente.size()];
				for(int i=0;i<listaPaciente.size();i++){
					arregloPaciente[i]= (PacienteTO)listaPaciente.get(i);
				}
				ret.setObject(arregloPaciente);
				ret.setCode(0);
				ret.setMessage("exito");
			}else{
				ret.setObject(null);
				ret.setCode(-1);
				ret.setMessage("no existen registros de pacientes");
			}
		}catch(Exception e){
			System.out.println("PacienteDAO:::getListaPaciente:: "+e.getMessage());
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
}
